<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta name="referrer" content="never" />
  
  
  <meta name="description" content="设计模式–Design Model
设计模式是一套被多人只晓得，反复使用的，经过分类编目的，代码设计经验的总结。

个人理解：简单来说，设计模式就是具有一定的代码规范的前人总结的经验，被后人们广泛使用。
目的：使用设计模式是为了可重用代码，让代码更容易地被他人理解并且保证代码的可靠性。
三大类型
创建型
结构型
行为型

六大原则
开闭原则：对修改关闭，对扩展开放

里氏替换原则：在任何引用对象基类的地方都可以自由的调用其子类对象

依赖倒置原则：抽象不应该依赖于具体类，而具体类应该依赖于抽象

单一职责原则：一个类尽可能只负责一个功能领域中的职责，或者说只有一个因其他变化的原因

迪米特法则：也称最少知道原则，一个软件实体尽可能少的与其他实体发生相互作用

接口隔离原则：使用多个专门的接口，而不是使用单一的接口，即可用户端不应该依赖于那些它不需要的接口


23种设计模式外加简单工厂创建型
简单工厂模式（Simple Factory Pattern）

工厂方法模式（Factory Method Pattern）

抽象工厂模式（Abstract Factory Pattern）

单例模式（Singleton Pattern）

生成器模式（Builder Pattern）

原型模式（Prototype Pattern）


 简单工厂模式不属于23种设计模式
结构型
代理模式（Proxy Pattern）

适配器模式（Adapter Pattern）

桥接模式（Bridge Pattern）

组合模式（Composite Pattern）

装饰模式（Decorator Pattern）

外观模式（Façade Pattern）

享元模式（Flyweight Pattern）


行为型
解释器（Interpreter ）

模板方法（Template）

责任链（Chain of Responsibility）

命令（Command）

迭代器（Iterator）

中介者（Mediator）

备忘录（Memento）

观察者（Observer）

状态模式（Statue ）

策略模式（Strategy）

访问者模式（Visitor）" />
  

  
  
  <meta name="google-site-verification" content="NCXVSqxqB-os803-VFMtIEd1SUNJVOIjctCfNYUwD0w" />
  <meta name="baidu-site-verification" content="Nzwx7HuplM" />
  
  <meta name="msvalidate.01" content="9E9EA92F7E5327E1FE8A5196D5253664" />
  
  
  
  <title>Design Model | masuo777的博客</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="设计模式–Design Model 设计模式是一套被多人只晓得，反复使用的，经过分类编目的，代码设计经验的总结。  个人理解：简单来说，设计模式就是具有一定的代码规范的前人总结的经验，被后人们广泛使用。 目的：使用设计模式是为了可重用代码，让代码更容易地被他人理解并且保证代码的可靠性。 三大类型 创建型 结构型 行为型  六大原则 开闭原则：对修改关闭，对扩展开放  里氏替换原则：在任何引用对象基">
<meta property="og:type" content="article">
<meta property="og:title" content="Design Model">
<meta property="og:url" content="https://masuo777.github.io/2021/08/10/Design%20Model/index.html">
<meta property="og:site_name" content="masuo777的博客">
<meta property="og:description" content="设计模式–Design Model 设计模式是一套被多人只晓得，反复使用的，经过分类编目的，代码设计经验的总结。  个人理解：简单来说，设计模式就是具有一定的代码规范的前人总结的经验，被后人们广泛使用。 目的：使用设计模式是为了可重用代码，让代码更容易地被他人理解并且保证代码的可靠性。 三大类型 创建型 结构型 行为型  六大原则 开闭原则：对修改关闭，对扩展开放  里氏替换原则：在任何引用对象基">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2021-08-09T16:00:00.000Z">
<meta property="article:modified_time" content="2022-03-08T03:09:27.086Z">
<meta property="article:author" content="John Doe">
<meta name="twitter:card" content="summary">
  
    <link rel="alternative" href="/atom.xml" title="masuo777的博客" type="application/atom+xml">
  
  
    <link rel="icon" href="http://7u2hdm.com1.z0.glb.clouddn.com/favicon.ico">
  
  
<link rel="stylesheet" href="/css/style.css">

  

  
  <!-- baidu webmaster push -->
  <script src='//push.zhanzhang.baidu.com/push.js'></script>
<meta name="generator" content="Hexo 5.4.0"></head>
<body class="home blog custom-background custom-font-enabled single-author">
  <div id="page" class="hfeed site">
      <header id="masthead" class="site-header" role="banner">
    <hgroup>
      <h1 class="site-title">
        <a href="/" title="masuo777的博客" rel="home">masuo777的博客</a>
      </h1>
      
        <script type="text/javascript" src="http://api.hitokoto.us/rand?encode=js&charset=utf-8"></script>
        <h2 class="site-description"><script>hitokoto();</script></h2>
      
    </hgroup>

    <nav id="site-navigation" class="main-navigation" role="navigation">
            <button class="menu-toggle">菜单</button>
            <a class="assistive-text" href="/#content" title="跳至内容">跳至内容</a><!--TODO-->
            <div class="menu-main-container">
                <ul id="menu-main" class="nav-menu">
                
                    <li class="menu-item menu-item-type-post_type menu-item-object-page"><a href="/">MDS</a></li>
                
                    <li class="menu-item menu-item-type-post_type menu-item-object-page"><a href="/todo">ToDo</a></li>
                
                    <li class="menu-item menu-item-type-post_type menu-item-object-page"><a href="/images">images</a></li>
                
                    <li class="menu-item menu-item-type-post_type menu-item-object-page"><a href="/about">ME</a></li>
                
                    <li class="menu-item menu-item-type-post_type menu-item-object-page"><a href="/works">作品集</a></li>
                
                    <li class="menu-item menu-item-type-post_type menu-item-object-page"><a href="/tools">工具集</a></li>
                
                    <li class="menu-item menu-item-type-post_type menu-item-object-page"><a target="_blank" rel="noopener" href="https://github.com/Masuo777">my github</a></li>
                
                </ul>
            </div>
    </nav>
</header>
      <div id="main" class="wrapper">
        <div id="primary" class="site-content"><div id="content" role="main"><article id="post-Design Model" class="post-Design Model post type-post status-publish format-standard hentry">
    <!---->

      <header class="entry-header">
        
        
  
    <h1 class="entry-title article-title">
      Design Model
    </h1>
  

        
        <div class="comments-link">
            
            <a href="/2021/08/10/Design%20Model/#comments" class="leave-reply">评论</a>
            
            <a href="javascript:void(0);" data-url="https://masuo777.github.io/2021/08/10/Design%20Model/" data-id="cl3jit8nu000k2ojb04tg7yef" class="leave-reply bdsharebuttonbox" data-cmd="more">分享</a>
        </div><!-- .comments-link -->
      </header><!-- .entry-header -->

    <div class="entry-content">
      
        <h1 id="设计模式–Design-Model"><a href="#设计模式–Design-Model" class="headerlink" title="设计模式–Design Model"></a>设计模式–Design Model</h1><blockquote>
<p>设计模式是一套被多人只晓得，反复使用的，经过分类编目的，代码设计经验的总结。</p>
</blockquote>
<p>个人理解：简单来说，设计模式就是具有一定的代码规范的前人总结的经验，被后人们广泛使用。</p>
<p>目的：使用设计模式是为了可重用代码，让代码更容易地被他人理解并且保证代码的可靠性。</p>
<h2 id="三大类型"><a href="#三大类型" class="headerlink" title="三大类型"></a>三大类型</h2><ul>
<li>创建型</li>
<li>结构型</li>
<li>行为型</li>
</ul>
<h2 id="六大原则"><a href="#六大原则" class="headerlink" title="六大原则"></a>六大原则</h2><ul>
<li><p>开闭原则：对修改关闭，对扩展开放</p>
</li>
<li><p>里氏替换原则：在任何引用对象基类的地方都可以自由的调用其子类对象</p>
</li>
<li><p>依赖倒置原则：抽象不应该依赖于具体类，而具体类应该依赖于抽象</p>
</li>
<li><p>单一职责原则：一个类尽可能只负责一个功能领域中的职责，或者说只有一个因其他变化的原因</p>
</li>
<li><p>迪米特法则：也称最少知道原则，一个软件实体尽可能少的与其他实体发生相互作用</p>
</li>
<li><p>接口隔离原则：使用多个专门的接口，而不是使用单一的接口，即可用户端不应该依赖于那些它不需要的接口</p>
</li>
</ul>
<h2 id="23种设计模式外加简单工厂"><a href="#23种设计模式外加简单工厂" class="headerlink" title="23种设计模式外加简单工厂"></a>23种设计模式外加简单工厂</h2><h4 id="创建型"><a href="#创建型" class="headerlink" title="创建型"></a>创建型</h4><ul>
<li><p>简单工厂模式（Simple Factory Pattern）</p>
</li>
<li><p>工厂方法模式（Factory Method Pattern）</p>
</li>
<li><p>抽象工厂模式（Abstract Factory Pattern）</p>
</li>
<li><p>单例模式（Singleton Pattern）</p>
</li>
<li><p>生成器模式（Builder Pattern）</p>
</li>
<li><p>原型模式（Prototype Pattern）</p>
</li>
</ul>
<p> 简单工厂模式不属于23种设计模式</p>
<h4 id="结构型"><a href="#结构型" class="headerlink" title="结构型"></a>结构型</h4><ul>
<li><p>代理模式（Proxy Pattern）</p>
</li>
<li><p>适配器模式（Adapter Pattern）</p>
</li>
<li><p>桥接模式（Bridge Pattern）</p>
</li>
<li><p>组合模式（Composite Pattern）</p>
</li>
<li><p>装饰模式（Decorator Pattern）</p>
</li>
<li><p>外观模式（Façade Pattern）</p>
</li>
<li><p>享元模式（Flyweight Pattern）</p>
</li>
</ul>
<h4 id="行为型"><a href="#行为型" class="headerlink" title="行为型"></a>行为型</h4><ul>
<li><p>解释器（Interpreter ）</p>
</li>
<li><p>模板方法（Template）</p>
</li>
<li><p>责任链（Chain of Responsibility）</p>
</li>
<li><p>命令（Command）</p>
</li>
<li><p>迭代器（Iterator）</p>
</li>
<li><p>中介者（Mediator）</p>
</li>
<li><p>备忘录（Memento）</p>
</li>
<li><p>观察者（Observer）</p>
</li>
<li><p>状态模式（Statue ）</p>
</li>
<li><p>策略模式（Strategy）</p>
</li>
<li><p>访问者模式（Visitor）</p>
</li>
</ul>
<span id="more"></span>
      
    </div><!-- .entry-content -->

    <footer class="entry-meta">
    <a href="/2021/08/10/Design%20Model/">
    <time datetime="2021-08-09T16:00:00.000Z" class="entry-date">
        2021-08-10
    </time>
</a>
    
    
    </footer>
</article>


    
<nav class="nav-single">
    <h3 class="assistive-text">文章导航</h3>
    
        <span class="nav-previous"><a href="/2021/08/11/Idea/" rel="prev"><span class="meta-nav">←</span> Idea</a></span>
    
    
        <span class="nav-next"><a href="/2021/08/01/java/" rel="next">Java <span class="meta-nav">→</span></a></span>
    
</nav><!-- .nav-single -->






<section id="comments">
  <!-- 多说评论框 start -->
  <div class="ds-thread" data-thread-key="post-Design Model" data-title="Design Model" data-url="https://masuo777.github.io/2021/08/10/Design%20Model/"></div>
  <!-- 多说评论框 end -->
  <!-- 多说公共JS代码 start (一个网页只需插入一次) -->
  <script type="text/javascript">
  var duoshuoQuery = {short_name:'ms'};
    (function() {
	  var ds = document.createElement('script');
	  ds.type = 'text/javascript';ds.async = true;
	  ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
	  ds.charset = 'UTF-8';
	  (document.getElementsByTagName('head')[0]
	   || document.getElementsByTagName('body')[0]).appendChild(ds);
    })();
  </script>
  <!-- 多说公共JS代码 end -->
</section>


</div></div>
        <div id="secondary" class="widget-area" role="complementary">
  
    <aside class="widget">
    <h3 class="widget-title">CONTACT ME</h3>
    <div class="widget-content">
      <p>邮箱：masuo0.0@foxmail.com</p>
      <p>QQ：2919029885</p>
      <a target="_blank" rel="noopener" href="https://www.cnblogs.com/msdog/">博客园</a>
      </br>
      <img src="https://masuo-github-image.oss-cn-beijing.aliyuncs.com/image/20210701223301.jpg" height="250px"/>
      
    </div>
</aside>
  
    <aside class="widget">
    <h3 class="widget-title">赞助我</h3>
    <div class="widget-content">
      <img src='/css/images/alipay.png' style='width:100%;' />
    </div>
</aside>
  
    <aside class="widget">
    <h3 class="widget-title">公众号</h3>
    <div class="widget-content">
      <p>暂时没有，待我代码行数100000，我可能才有这个资格吧。</p>
      <p></p>
    </div>
</aside>
  
</div>
      </div>
      <footer id="colophon" role="contentinfo">
    <p>&copy; 2022 John Doe; All rights reserved.</p>
    <p>Powered by <a href="http://hexo.io/" target="_blank">Hexo</a></p>
</footer>
    <script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"1","bdMiniList":false,"bdPic":"","bdStyle":"2","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>

<script src="/js/jquery-2.0.3.min.js"></script>


  
<link rel="stylesheet" href="/fancybox/jquery.fancybox.css">

  
<script src="/fancybox/jquery.fancybox.pack.js"></script>




<script src="/js/script.js"></script>


<script src="/js/navigation.js"></script>

<div id="bg"></div>

  </div>
</body>
</html>